#ifndef CONVERTORMANAGER_H_
#define CONVERTORMANAGER_H_

//std headers
#include <string>
#include <vector>
#include <map>

//project headers
#include "./Plugin/IConverter.h"

//! ConvertorManager
/*!
	Trieda sluzi na spravu pluginov urcenych na konvertovanie.
*/
class ConvertorManager
{
	public:
		//! ConvertorManager (Konstruktor)
		/*!
			Sluzi na inicializaciu spravcu konvertorov
			\param vector<string> kolekcia pluginov ktore sa maju nahrat
		*/
		ConvertorManager(std::vector<std::string> thePlugins);


		//! ~ConvertorManager (Destruktor)
		/*!
		Uvolni vsetky zdroje
		*/
		~ConvertorManager(void);

		//! Load (public )
		/*!
			Funkcia sluzi na nahratie pluginu
			\param std::string thePath cesta k pluginu
			\return bool true ak uspesne sa nahral ,false inak
		*/
		bool Load(std::string thePath);


		//! Get (public )
		/*!
			Ziska konvertor na konverziu dokumentu na zaklade formatu
			\param std::string theFormat format dokumentu
			\return IConverter* konkretny konverter alebo NULL ak nexistuje taky konvertor
		*/
		PluginSystem::IConverter *Get(std::string theFormat);

	private:
		typedef std::map<std::string,PluginSystem::IConverter*> LoadedPlugins;
		LoadedPlugins myPlugins;
		const char* myPluginType;

};


#endif //CONVERTORMANAGER_H_
